﻿////8. 计算最⼤值和最⼩值的差值
////8.1 题⽬描述:
////输⼊10个整数，写代码找出其中最⼤值和最⼩值，计算最⼤值和最⼩值的差，并打印出差值结果
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//         ！！！！！！！！！！！！！！！！                      自己的想法                   ！！！！！！！！！！！！！
int main()
{
	int i = 0;
	int shi[10] = { 0 };
	int max = 0;
	int min = 0;
	for (i = 0; i < 10; i++)
	   {
	       scanf("%d", &shi[i]);
	   }
	for (i = 0;i < 10;i++)
	{
		int j = 0;
		int is_Max = 1;              //假设shi[i]是最大的
		int is_Min = 1;              //假设shi[i]是最小的		
	for (j = 0;j < 10;j++)
		{
		    if (shi[i] == shi[j])continue;
			if (shi[i] > shi[j])        //现在要做的是必须必每个都大才可以输出，可以考虑标记符flag
			{
				 is_Max = 0;//不是最大的
					         
			}
			if (shi[i] < shi[j])        //现在要做的是必须必每个都大才可以输出，可以考虑标记符flag
			{
				is_Min = 0;//不是最小的

			}
		}
		if (is_Max)
		{
			max = shi[i];
		}
		if (is_Min)
		{
			min = shi[i];
		}
	}
	int cha = max - min;
	printf("%d\n", max);
	printf("%d\n", min);
	printf("%d\n", cha);
}

		
//         ！！！！！！！！！！！！！！！！                     计算机优化 自己的想法                   ！！！！！！！！！！！！！


int main()
{
    int shi[10];
    int i, j;
    int max, min;
    // 输入10个整数
    printf("请输入10个整数: ");
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &shi[i]);
    }

    // 初始化max和min为第一个元素（暂时假设）

    max = shi[0];
    min = shi[0];

    // 遍历每一个元素shi[i]，检查它是否是最大的或最小的
    for (i = 0; i < 10; i++)
    {
        int is_max = 1; // 假设shi[i]是最大的
        int is_min = 1; // 假设shi[i]是最小的

        // 遍历所有其他元素shi[j]，检查是否满足条件
        for (j = 0; j < 10; j++) 
        {
            if (i == j) continue; // 不和自己比较

            if (shi[i] <= shi[j]) 
            {
                is_max = 0; // shi[i]不是最大的
            }
            if (shi[i] >= shi[j]) 
            {
                is_min = 0; // shi[i]不是最小的
            }
        }

        // 如果shi[i]比所有其他元素都大，则更新max
        if (is_max)
        {
            max = shi[i];
        }
        // 如果shi[i]比所有其他元素都小，则更新min
        if (is_min)
        {
            min = shi[i];
        }
    }

    // 计算差值并输出
    int diff = max - min;
    printf("最大值: %d\n", max);
    printf("最小值: %d\n", min);
    printf("差值: %d\n", diff);

    return 0;
}

//         ！！！！！！！！！！！！！！！！                      最优解                            ！！！！！！！！！！！！！
// #include <stdio.h>

int main()
{
    int i = 0;
    int shi[10] = { 0 };
    int max = shi[0]; // 初始化最大值为数组的第一个元素
    int min = shi[0]; // 初始化最小值为数组的第一个元素

    // 输入10个整数
    printf("请输入10个整数: ");
    for (i = 0; i < 10; i++) 
    {
        scanf("%d", &shi[i]);
    }

    // 查找最大值和最小值
    for (i = 0; i < 10; i++) 
    {
        if (shi[i] > max) 
        {
            max = shi[i]; // 更新最大值
        }
        if (shi[i] < min) 
        {
            min = shi[i]; // 更新最小值
        }
    }

    // 计算最大值和最小值的差值
    int diff = max - min;

    // 打印结果
    printf("最大值和最小值的差值是: %d\n", diff);

    return 0;
}

// 
//                                                          continue和break区别
//(1) continue: "跳过这次"
//作用 :
//    当程序执行到 continue，会直接跳到循环的末尾（不执行后面的代码），然后进入下一次循环。
//    适用情况 :
//当某些情况下不需要执行本次循环的剩余部分时使用。
//示例 :
//打印1~5的数字，但跳过3：
//for (int i = 1; i <= 5; i++) {
//    if (i == 3) continue;
//    printf("%d ", i);
//}
//// Output: "1 2 4 5"
//(2) break: "直接结束"
//作用 :
//    当程序执行到 break，会立即终止整个循环（不再执行后续的循环）。
//    适用情况 :
//当满足某个条件时，不需要再继续循环时使用。
//示例 :
//在数组中查找数字5，找到后立即停止循环：
//int arr[] = { 2,4,6,5,8 };
//for (int i = 0; i < 5; i++) {
//    if (arr[i] == 5) {
//        printf("找到了5！");
//        break;
//    }
//}
//// Output: "找到了5！"

